/*************************************************************************
    > File Name: 8.sigset.c
    > Author: Ykk
    > Mail: 3393579535@qq.com 
    > Created Time: 2023年04月25日 星期二 19时48分46秒
 ************************************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<signal.h>

//显示信号集
void show_set(sigset_t *s)
{

	int i = 0;
	int ret;

	for(i = 1; i < 32; i++)
	{
		//判断指定的信号是否在集合中
		if(1 == sigismember(s,i))
		{
			ret = sigismember(s,i);
			printf("%d",ret);
			printf("1 ");
		}
		else
		{
			ret = sigismember(s,i);
			printf("%d",ret);
			printf("0 ");
		}
	}
	putchar('\n');
}
//信号集处理函数
int main()
{
	int i = 0;

	//信号集集合
	sigset_t set;

	//清空集合
	sigemptyset(&set);
	show_set(&set);

	//将所有信号加入到set集合中
	sigfillset(&set);
	show_set(&set);

	//将信号2,3从信号集中移除
	sigdelset(&set,SIGINT);
	sigdelset(&set,SIGQUIT);
	show_set(&set);

	//将信号2添加进信号集中
	sigaddset(&set,SIGINT);
	show_set(&set);
	return 0;
}
